/*
 * 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。[遇见知启蒙，邂逅框架梦]
 * 
 * https://zhiqim.org/project/zhiqim_framework/zhiqim_kernel.htm
 *
 * Zhiqim Kernel is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *          http://license.coscl.org.cn/MulanPSL2
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 */
package org.zhiqim.kernel.logging;

/**
 * 日志记录器抽象类定义接口<br><br>
 * 1、ZhiqimLogger，知启蒙默认的日志记录器
 * 2、Jdk14Logger，JDK1.4自带的日志记录器
 * 3、Log4jLogger，Log4j日志记录器
 * 
 * @version v1.0.0 @author zouzhigang 2014-2-27 新建与整理
 */
public interface Logger extends LogConstants
{
    /**
     * 初始加载的方法，在启动时调用一次，如Log4jLogger用到
     * 
     * @return          =true表示加载成功,=false表示失败
     */
    boolean load();
    
    /**
     * 增加日志到记录器中
     * 
     * @param log       日志对象
     * @param level     日志级别
     * @param message   日志消息
     * @param throwable 日志异常
     */
    void append(Log log, int level, String message, Throwable throwable);
    
    /**
     * 判断日志级别是否开启
     * 
     * @param log       日志对象
     * @param level     日志级别
     * @return          =true表示开启，=false表示关闭
     */
    boolean isEnabled(Log log, int level);
}
